package singleton;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2023-04-08
 * Time: 15:04
 */

class ESingleton{
    //一来就创建实例
    private final static ESingleton instance = new ESingleton();

    /**
     * 静态常量的方式创建饿汉模式的
     * 优点：写法比较简单 就是在类装载的时候完成的实例化 避免了线程同步的问题
     * 缺点：在类装载的时候就完成实例化，没有没有达到懒加载的效果 如果从始至终从未使用过这个实例 则会造成内存浪费
     *
     */

    //私有化构造方法 外部不能获取
    private ESingleton(){}
    //提供唯一一个获取实例的方法
    public static ESingleton getInstance(){
        return instance;
    }

}

public class TestDemo {
    //单例模式 采取一定的方法 保证整个软件系统中 对某一个类 只存在一个对象实例 并且只提供了一个获取实例的方法
    public static void main(String[] args) {
        //饿汉模式 静态的 获取到唯一实例
        ESingleton eSingleton = ESingleton.getInstance();
        System.out.println(eSingleton.hashCode());
        ESingleton eSingleton1 = ESingleton.getInstance();
        System.out.println(eSingleton1.hashCode());
        //两个hashCode值相同 是同一个实例对象
    }
}
